package org.lanqiao.heuet.dao.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.lanqiao.heuet.dao.IEmployeeDao;

/**
 * 数据库操作层实现类
 * 
 * @author Administrator
 *
 * @param <T>
 */
public class EmployeeDaoImpl<T> implements IEmployeeDao<T> {

	/**
	 * 这里定义一个sessionfactory的变量，改变量无需初始化处理，由spring的依赖注入机制，进行初始化处理 只需要为该变量提供
	 * getter、setter接口即可，spring就可以根据spring的配置文件来进行初始化处理
	 */
	private SessionFactory sessionFactroy;


	public SessionFactory getSessionFactroy() {
		return sessionFactroy;
	}

	public void setSessionFactroy(SessionFactory sessionFactroy) {
		this.sessionFactroy = sessionFactroy;
	}

	@Override
	public void addEmployeeInfo(T t) {
		// 调用Hibernate进行用户注册信息保存处理
		// 获取数据库回话对象
		Session session = sessionFactroy.getCurrentSession();
		// 保存用户信息实体对象
		session.saveOrUpdate(t);
	}

	@Override
	public List<T> queryAllEmployeeInfo(int iOlder) {
		// 查询获取所有的用户信息
		// 获取数据库回话对象
		Session session = sessionFactroy.getCurrentSession();
		// 组织类似于sql语句的 hql查询语句（hql是Hibernate类似于sql语句的查询语句）
		String strHql = "";
		if (iOlder == 0) {
			strHql = "from EmployeeInfoBean";
		} else {
			// 查询所有的用户信息，并按照id倒序的顺序进行显示
			strHql = "from EmployeeInfoBean order by employeeId desc";
		} 
		// 创建查询对象 query
		Query query = session.createQuery(strHql);
		// 使用query查询，进行Hibernate的hql查询，查询结果时list
		List lst = query.list();
		return lst;
	}

}
